/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package ohos.oat.config;

import junit.framework.TestCase;
import org.junit.Assert;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * OatConfigTest类用于测试oatconfig功能
 *
 * @since 2025-07-28
 */
public class OatConfigTest extends TestCase {
    private OatConfig oatConfig;

    private String filePath;

    private final String apacheLicenseText = "Apache License\n" +
            "Version 2.0, January 2004\n" +
            "http://www.apache.org/licenses/\n" +
            "\n" +
            "TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n" +
            "\n" +
            "1. Definitions.\n" +
            "\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined" +
            " by Sections 1 through 9 of this document.\n" +
            "\n" +
            "\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is " +
            "granting the License.\n" +
            "\n" +
            "\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, " +
            "are controlled by, or are under common control with that entity. For the purposes of this definition," +
            " \"control\" means (i) the power, direct or indirect, to cause the direction or management of " +
            "such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of " +
            "the outstanding shares, or (iii) beneficial ownership of such entity.\n" +
            "\n" +
            "\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted " +
            "by this License.\n" +
            "\n" +
            "\"Source\" form shall mean the preferred form for making modifications, including but not limited to" +
            " software source code, documentation source, and configuration files.\n" +
            "\n" +
            "\"Object\" form shall mean any form resulting from mechanical transformation or translation of" +
            " a Source form, including but not limited to compiled object code, generated documentation, " +
            "and conversions to other media types.\n" +
            "\n" +
            "\"Work\" shall mean the work of authorship, whether in Source or Object form, made available" +
            " under the License, as indicated by a copyright notice that is included in or attached " +
            "to the work (an example is provided in the Appendix below).\n" +
            "\n" +
            "\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on" +
            " (or derived from) the Work and for which the editorial revisions, annotations, elaborations," +
            " or other modifications represent, as a whole, an original work of authorship. " +
            "For the purposes of this License, Derivative Works shall not include works that " +
            "remain separable from, " +
            "or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.\n" +
            "\n" +
            "\"Contribution\" shall mean any work of authorship, including the original version of the Work " +
            "and any modifications or additions to that Work or Derivative Works thereof, " +
            "that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner" +
            " or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. " +
            "For the purposes of this definition, \"submitted\" means any form of electronic, verbal, " +
            "or written communication sent to the Licensor or its representatives, including but not limited " +
            "to communication on electronic mailing lists, source code control systems, " +
            "and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of" +
            " discussing and improving the Work, but excluding communication that is conspicuously marked " +
            "or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"\n" +
            "\n" +
            "\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of " +
            "whom a Contribution has been received by Licensor and subsequently incorporated within the Work.\n" +
            "\n" +
            "2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor" +
            " hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, " +
            "irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, " +
            "publicly perform, sublicense, and distribute the Work and such Derivative Works in Source " +
            "or Object form.\n" +
            "3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor" +
            " hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable " +
            "(except as stated in this section) patent license to make, have made, use, offer to sell," +
            " sell, import," +
            " and otherwise transfer the Work, where such license applies only to those patent claims licensable " +
            "by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination " +
            "of their Contribution(s) with the Work to which such Contribution(s) was submitted. " +
            "If You institute patent litigation against any entity (including a cross-claim or counterclaim " +
            "in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct" +
            " or contributory patent infringement, then any patent licenses granted to You under this License for" +
            " that Work shall terminate as of the date such litigation is filed.\n" +
            "4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof " +
            "in any medium, with or without modifications, and in Source or Object form, provided that You meet " +
            "the following conditions:\n" +
            "(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and\n" +
            "(b) You must cause any modified files to carry prominent notices stating that" +
            " You changed the files; and\n" +
            "(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, " +
            "patent, trademark, and attribution notices from the Source form of the Work, excluding those notices" +
            " that do not pertain to any part of the Derivative Works; and\n" +
            "(d) If the Work includes a \"NOTICE\" text file as part of its distribution, " +
            "then any Derivative Works" +
            " that You distribute must include a readable copy of the attribution notices contained within " +
            "such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, " +
            "in at least one of the following places: within a NOTICE text file distributed as part " +
            "of the Derivative Works; within the Source form or documentation, if provided along with " +
            "the Derivative Works; or, within a display generated by the Derivative Works, " +
            "if and wherever such third-party notices normally appear. The contents of the NOTICE file are for" +
            " informational purposes only and do not modify the License. You may add Your own attribution notices" +
            " within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text " +
            "from the Work, provided that such additional attribution notices cannot be construed as" +
            " modifying the License.\n" +
            "You may add Your own copyright statement to Your modifications and may provide additional or " +
            "different license terms and conditions for use, reproduction, " +
            "or distribution of Your modifications, " +
            "or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution" +
            " of the Work otherwise complies with the conditions stated in this License.\n" +
            "\n" +
            "5. Submission of Contributions. Unless You explicitly state otherwise, " +
            "any Contribution intentionally" +
            " submitted for inclusion in the Work by You to the Licensor shall be " +
            "under the terms and conditions of" +
            " this License, without any additional terms or conditions. Notwithstanding the above, nothing herein" +
            " shall supersede or modify the terms of any separate license agreement you may have executed with" +
            " Licensor regarding such Contributions.\n" +
            "6. Trademarks. This License does not grant permission to use the trade names, trademarks, " +
            "service marks, or product names of the Licensor, except as required for reasonable and " +
            "customary use in describing the origin of the Work and reproducing the content of the NOTICE file.\n" +
            "7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, " +
            "Licensor provides the Work (and each Contributor provides its Contributions) on " +
            "an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, " +
            "including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, " +
            "MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible " +
            "for determining the appropriateness of using or redistributing the Work and assume any risks " +
            "associated with Your exercise of permissions under this License.\n" +
            "8. Limitation of Liability. In no event and under no legal theory, whether in tort" +
            " (including negligence), contract, or otherwise, unless required by applicable law " +
            "(such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor" +
            " be liable to You for damages, including any direct, indirect, special, incidental, or " +
            "consequential damages of any character arising as a result of this License or out of the use or " +
            "inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage," +
            " computer failure or malfunction, or any and all other commercial damages or losses), " +
            "even if such Contributor has been advised of the possibility of such damages.\n" +
            "9. Accepting Warranty or Additional Liability. While redistributing the Work or " +
            "Derivative Works thereof, You may choose to offer, and charge a fee for, " +
            "acceptance of support, warranty, indemnity, or other liability obligations and/or " +
            "rights consistent with this License. However, in accepting such obligations," +
            " You may act only on Your own behalf and on Your sole responsibility, not on behalf of " +
            "any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor " +
            "harmless for any liability incurred by, or claims asserted against, such Contributor" +
            " by reason of your accepting any such warranty or additional liability.\n" +
            "END OF TERMS AND CONDITIONS\n" +
            "\n" +
            "APPENDIX: How to apply the Apache License to your work.\n" +
            "\n" +
            "To apply the Apache License to your work, attach the following boilerplate notice, " +
            "with the fields enclosed by brackets \"[]\" replaced with your own identifying information. " +
            "(Don't include the brackets!) The text should be enclosed in the appropriate comment syntax " +
            "for the file format. We also recommend that a file or class name and description of purpose" +
            " be included on the same \"printed page\" as the copyright notice for easier identification " +
            "within third-party archives.\n" +
            "\n" +
            "Copyright [yyyy] [name of copyright owner]\n" +
            "\n" +
            "Licensed under the Apache License, Version 2.0 (the \"License\");\n" +
            "you may not use this file except in compliance with the License.\n" +
            "You may obtain a copy of the License at\n" +
            "\n" +
            "http://www.apache.org/licenses/LICENSE-2.0\n" +
            "\n" +
            "Unless required by applicable law or agreed to in writing, software\n" +
            "distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
            "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
            "See the License for the specific language governing permissions and\n" +
            "limitations under the License.";

    private final String mplLicenseText = "Mozilla Public License Version 2.0\n" +
            "\n" +
            "==================================\n" +
            "\n" +
            "1. Definitions\n" +
            "\n" +
            "--------------\n" +
            "\n" +
            "1.1. \"Contributor\" means each individual or legal entity that creates, contributes to the creation of," +
            " or owns Covered Software.\n" +
            "1.2. \"Contributor Version\" means the combination of the Contributions of others (if any) used by" +
            " a Contributor and that particular Contributor's Contribution.\n" +
            "1.3. \"Contribution\" means Covered Software of a particular Contributor.\n" +
            "1.4. \"Covered Software\" means Source Code Form to which the initial Contributor " +
            "has attached the notice" +
            " in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form," +
            " in each case including portions thereof.\n" +
            "1.5. \"Incompatible With Secondary Licenses\" means\n" +
            "(a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software;" +
            " or\n" +
            "(b) that the Covered Software was made available under the terms of version 1.1 " +
            "or earlier of the License, but not also under the terms of a Secondary License.\n" +
            "1.6. \"Executable Form\" means any form of the work other than Source Code Form.\n" +
            "1.7. \"Larger Work\" means a work that combines Covered Software with other material, " +
            "in a separate file or files, that is not Covered Software.\n" +
            "1.8. \"License\" means this document.\n" +
            "1.9. \"Licensable\" means having the right to grant, to the maximum extent possible, " +
            "whether at the time of the initial grant or subsequently, any and all of the rights conveyed" +
            " by this License.\n" +
            "1.10. \"Modifications\" means any of the following:\n" +
            "(a) any file in Source Code Form that results from an addition to, deletion from, " +
            "or modification of the contents of Covered Software; or\n" +
            "(b) any new file in Source Code Form that contains any Covered Software.\n" +
            "1.11. \"Patent Claims\" of a Contributor means any patent claim(s), including without limitation," +
            " method, process, and apparatus claims, in any patent Licensable by such Contributor " +
            "that would be infringed, but for the grant of the License, by the making, using, selling, " +
            "offering for sale, having made, import, or transfer of either its Contributions or" +
            " its Contributor Version.\n" +
            "1.12. \"Secondary License\" means either the GNU General Public License, Version 2.0," +
            " the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License," +
            " Version 3.0, or any later versions of those licenses.\n" +
            "1.13. \"Source Code Form\" means the form of the work preferred for making modifications.\n" +
            "1.14. \"You\" (or \"Your\") means an individual or a legal entity exercising rights under this License." +
            " For legal entities, \"You\" includes any entity that controls, is controlled by, " +
            "or is under common control with You. For purposes of this definition, \"control\" means (a) the power," +
            " direct or indirect, to cause the direction or management of such entity, " +
            "whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) " +
            "of the outstanding shares or beneficial ownership of such entity.\n" +
            "2. License Grants and Conditions\n" +
            "\n" +
            "--------------------------------\n" +
            "\n" +
            "2.1. Grants\n" +
            "Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:\n" +
            "\n" +
            "(a) under intellectual property rights (other than patent or trademark) Licensable " +
            "by such Contributor to use, reproduce, make available, modify, display, perform, distribute, " +
            "and otherwise exploit its Contributions, either on an unmodified basis, with Modifications," +
            " or as part of a Larger Work; and\n" +
            "(b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, " +
            "import, and otherwise transfer either its Contributions or its Contributor Version.\n" +
            "2.2. Effective Date\n" +
            "The licenses granted in Section 2.1 with respect to any Contribution become effective " +
            "for each Contribution on the date the Contributor first distributes such Contribution.\n" +
            "\n" +
            "2.3. Limitations on Grant Scope\n" +
            "The licenses granted in this Section 2 are the only rights granted under this License. " +
            "No additional rights or licenses will be implied from the distribution or licensing of " +
            "Covered Software under this License. Notwithstanding Section 2.1(b) above," +
            " no patent license is granted by a Contributor:\n" +
            "\n" +
            "(a) for any code that a Contributor has removed from Covered Software; or\n" +
            "(b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software," +
            " or (ii) the combination of its Contributions with other software " +
            "(except as part of its Contributor Version); or\n" +
            "(c) under Patent Claims infringed by Covered Software in the absence of its Contributions.\n" +
            "This License does not grant any rights in the trademarks, service marks, or logos of any Contributor " +
            "(except as may be necessary to comply with the notice requirements in Section 3.4).\n" +
            "\n" +
            "2.4. Subsequent Licenses\n" +
            "No Contributor makes additional grants as a result of Your choice to distribute the Covered Software " +
            "under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License " +
            "(if permitted under the terms of Section 3.3).\n" +
            "\n" +
            "2.5. Representation\n" +
            "Each Contributor represents that the Contributor believes its Contributions are its original creation(s)" +
            " or it has sufficient rights to grant the rights to its Contributions conveyed by this License.\n" +
            "\n" +
            "2.6. Fair Use\n" +
            "This License is not intended to limit any rights You have under applicable copyright doctrines of" +
            " fair use, fair dealing, or other equivalents.\n" +
            "\n" +
            "2.7. Conditions\n" +
            "Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1.\n" +
            "\n" +
            "3. Responsibilities\n" +
            "\n" +
            "-------------------\n" +
            "\n" +
            "3.1. Distribution of Source Form\n" +
            "All distribution of Covered Software in Source Code Form, including any Modifications that " +
            "You create or to which You contribute, must be under the terms of this License. " +
            "You must inform recipients that the Source Code Form of the Covered Software is governed by" +
            " the terms of this License, and how they can obtain a copy of this License. " +
            "You may not attempt to alter or restrict the recipients' rights in the Source Code Form.\n" +
            "\n" +
            "3.2. Distribution of Executable Form\n" +
            "If You distribute Covered Software in Executable Form then:\n" +
            "\n" +
            "(a) such Covered Software must also be made available in Source Code Form, " +
            "as described in Section 3.1, and You must inform recipients of the Executable Form " +
            "how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, " +
            "at a charge no more than the cost of distribution to the recipient; and\n" +
            "(b) You may distribute such Executable Form under the terms of this License, " +
            "or sublicense it under different terms, provided that the license " +
            "for the Executable Form does not attempt to limit or alter the recipients' rights " +
            "in the Source Code Form under this License.\n" +
            "3.3. Distribution of a Larger Work\n" +
            "You may create and distribute a Larger Work under terms of Your choice, provided that" +
            " You also comply with the requirements of this License for the Covered Software. " +
            "If the Larger Work is a combination of Covered Software with a work governed by " +
            "one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses," +
            " this License permits You to additionally distribute such Covered Software " +
            "under the terms of such Secondary License(s), so that the recipient of the Larger Work may," +
            " at their option, further distribute the Covered Software under the terms of either this License" +
            " or such Secondary License(s).\n" +
            "\n" +
            "3.4. Notices\n" +
            "You may not remove or alter the substance of any license notices (including copyright notices," +
            " patent notices, disclaimers of warranty, or limitations of liability) contained " +
            "within the Source Code Form of the Covered Software, " +
            "except that You may alter any license notices to the extent required to" +
            " remedy known factual inaccuracies.\n" +
            "\n" +
            "3.5. Application of Additional Terms\n" +
            "You may choose to offer, and to charge a fee for, warranty, support, indemnity " +
            "or liability obligations to one or more recipients of Covered Software. However, " +
            "You may do so only on Your own behalf, and not on behalf of any Contributor. " +
            "You must make it absolutely clear that any such warranty, support, indemnity, " +
            "or liability obligation is offered by You alone, and You hereby agree to" +
            " indemnify every Contributor for any liability incurred by such Contributor as a result of warranty," +
            " support, indemnity or liability terms You offer. " +
            "You may include additional disclaimers of warranty and limitations of liability specific " +
            "to any jurisdiction.\n" +
            "\n" +
            "4. Inability to Comply Due to Statute or Regulation\n" +
            "\n" +
            "---------------------------------------------------\n" +
            "\n" +
            "If it is impossible for You to comply with any of the terms of this License with respect " +
            "to some or all of the Covered Software due to statute, judicial order, or regulation then You must:" +
            " (a) comply with the terms of this License to the maximum extent possible; and " +
            "(b) describe the limitations and the code they affect. Such description must be placed " +
            "in a text file included with all distributions of the Covered Software under this License. " +
            "Except to the extent prohibited by statute or regulation, " +
            "such description must be sufficiently detailed " +
            "for a recipient of ordinary skill to be able to understand it.\n" +
            "\n" +
            "5. Termination\n" +
            "\n" +
            "--------------\n" +
            "\n" +
            "5.1. The rights granted under this License will terminate automatically " +
            "if You fail to comply with any of its terms. However, if You become compliant, " +
            "then the rights granted under this License from a particular Contributor are reinstated " +
            "(a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants," +
            " and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance " +
            "by some reasonable means prior to 60 days after You have come back into compliance. " +
            "Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis " +
            "if such Contributor notifies You of the non-compliance by some reasonable means, " +
            "this is the first time You have received notice of non-compliance " +
            "with this License from such Contributor, and You become compliant prior to 30 days " +
            "after Your receipt of the notice.\n" +
            "5.2. If You initiate litigation against any entity by asserting a patent infringement claim " +
            "(excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that" +
            " a Contributor Version directly or indirectly infringes any patent, " +
            "then the rights granted to You by any and all Contributors for the Covered Software " +
            "under Section 2.1 of this License shall terminate.\n" +
            "5.3. In the event of termination under Sections 5.1 or 5.2 above, " +
            "all end user license agreements (excluding distributors and resellers) " +
            "which have been validly granted by You or Your distributors " +
            "under this License prior to termination shall survive termination.\n" +
            "************************************************************************\n" +
            "\n" +
            "6. Disclaimer of Warranty\n" +
            "\n" +
            "* ------------------------- *\n" +
            "\n" +
            "Covered Software is provided under this License on an \"as is\" basis, without warranty of any kind," +
            " either expressed, implied, or statutory, including, without limitation, " +
            "warranties that the Covered Software is free of defects, merchantable, " +
            "fit for a particular purpose or non-infringing. The entire risk as to the quality " +
            "and performance of the Covered Software is with You. " +
            "Should any Covered Software prove defective in any respect, " +
            "You (not any Contributor) assume the cost of any necessary servicing, repair, or correction." +
            " This disclaimer of warranty constitutes an essential part of this License. " +
            "No use of any Covered Software is authorized under this License except under this disclaimer.\n" +
            "\n" +
            "************************************************************************\n" +
            "\n" +
            "************************************************************************\n" +
            "\n" +
            "7. Limitation of Liability\n" +
            "\n" +
            "* -------------------------- *\n" +
            "\n" +
            "Under no circumstances and under no legal theory, whether tort (including negligence), contract, " +
            "or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, " +
            "be liable to You for any direct, indirect, special, incidental, " +
            "or consequential damages of any character including, without limitation, damages for lost profits, " +
            "loss of goodwill, work stoppage, computer failure or malfunction, " +
            "or any and all other commercial damages or losses, even if such party shall have been informed of" +
            " the possibility of such damages. " +
            "This limitation of liability shall not apply to liability for death or personal injury resulting" +
            " from such party's negligence to the extent applicable law prohibits such limitation." +
            " Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages," +
            " so this exclusion and limitation may not apply to You.\n" +
            "\n" +
            "************************************************************************\n" +
            "\n" +
            "8. Litigation\n" +
            "\n" +
            "-------------\n" +
            "\n" +
            "Any litigation relating to this License may be brought only in the courts of a jurisdiction " +
            "where the defendant maintains its principal place of business and such litigation shall be " +
            "governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. " +
            "Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims.\n" +
            "\n" +
            "9. Miscellaneous\n" +
            "\n" +
            "----------------\n" +
            "\n" +
            "This License represents the complete agreement concerning the subject matter hereof. " +
            "If any provision of this License is held to be unenforceable, such provision shall be reformed only " +
            "to the extent necessary to make it enforceable. Any law or regulation which provides that the language " +
            "of a contract shall be construed against the drafter shall not be used to construe this License" +
            " against a Contributor.\n" +
            "\n" +
            "10. Versions of the License\n" +
            "\n" +
            "---------------------------\n" +
            "\n" +
            "10.1. New Versions\n" +
            "Mozilla Foundation is the license steward. Except as provided in Section 10.3, " +
            "no one other than the license steward has the right to modify or publish new versions of this License. " +
            "Each version will be given a distinguishing version number.\n" +
            "\n" +
            "10.2. Effect of New Versions\n" +
            "You may distribute the Covered Software under the terms of the version of the License " +
            "under which You originally received the Covered Software, " +
            "or under the terms of any subsequent version published by the license steward.\n" +
            "\n" +
            "10.3. Modified Versions\n" +
            "If you create software not governed by this License, and you want to create a new license " +
            "for such software, you may create and use a modified version of this License " +
            "if you rename the license and remove any references to the name of the license steward" +
            " (except to note that such modified license differs from this License).\n" +
            "\n" +
            "10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses\n" +
            "If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses " +
            "under the terms of this version of the License, the notice described in Exhibit B " +
            "of this License must be attached.\n" +
            "\n" +
            "Exhibit A - Source Code Form License Notice\n" +
            "\n" +
            "-------------------------------------------\n" +
            "\n" +
            "This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. " +
            "If a copy of the MPL was not distributed with this file, " +
            "You can obtain one at https://mozilla.org/MPL/2.0/.\n" +
            "\n" +
            "If it is not possible or desirable to put the notice in a particular file, " +
            "then You may include the notice in a location (such as a LICENSE file in a relevant directory) " +
            "where a recipient would be likely to look for such a notice.\n" +
            "\n" +
            "You may add additional accurate notices of copyright ownership.\n" +
            "\n" +
            "Exhibit B - \"Incompatible With Secondary Licenses\" Notice\n" +
            "\n" +
            "---------------------------------------------------------\n" +
            "\n" +
            "This Source Code Form is \"Incompatible With Secondary Licenses\", " +
            "as defined by the Mozilla Public License, v. 2.0.";

    private final String lgplLicenseText = "GNU LIBRARY GENERAL PUBLIC LICENSE\n" +
            "\n" +
            "Version 2, June 1991\n" +
            "\n" +
            "Copyright (C) 1991 Free Software Foundation, Inc.\n" +
            "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA\n" +
            "\n" +
            "Everyone is permitted to copy and distribute verbatim copies of this license document, " +
            "but changing it is not allowed.\n" +
            "\n" +
            "[This is the first released version of the library GPL. It is numbered 2 because it goes " +
            "with version 2 of the ordinary GPL.]\n" +
            "\n" +
            "Preamble\n" +
            "\n" +
            "The licenses for most software are designed to take away your freedom to share and change it." +
            " By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and" +
            " change free software--to make sure the software is free for all its users.\n" +
            "\n" +
            "This license, the Library General Public License, applies to some specially designated " +
            "Free Software Foundation software, and to any other libraries whose authors decide to use it. " +
            "You can use it for your libraries, too.\n" +
            "\n" +
            "When we speak of free software, we are referring to freedom, not price. Our General Public Licenses" +
            " are designed to make sure that you have the freedom to distribute copies of free software " +
            "(and charge for this service if you wish), that you receive source code or can get it if you want it," +
            " that you can change the software or use pieces of it in new free programs; " +
            "and that you know you can do these things.\n" +
            "\n" +
            "To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or" +
            " to ask you to surrender the rights. These restrictions translate to certain responsibilities for you" +
            " if you distribute copies of the library, or if you modify it.\n" +
            "\n" +
            "For example, if you distribute copies of the library, whether gratis or for a fee, " +
            "you must give the recipients all the rights that we gave you. You must make sure that they, too," +
            " receive or can get the source code. If you link a program with the library, " +
            "you must provide complete object files to the recipients so that they can relink them with the library, " +
            "after making changes to the library and recompiling it. " +
            "And you must show them these terms so they know their rights.\n" +
            "\n" +
            "Our method of protecting your rights has two steps: " +
            "(1) copyright the library, and (2) offer you this license which gives you legal permission to copy, " +
            "distribute and/or modify the library.\n" +
            "\n" +
            "Also, for each distributor's protection, we want to make certain that everyone understands " +
            "that there is no warranty for this free library. If the library is modified by someone else " +
            "and passed on, we want its recipients to know that what they have is not the original version, " +
            "so that any problems introduced by others will not reflect on the original authors' reputations.\n" +
            "\n" +
            "Finally, any free program is threatened constantly by software patents. " +
            "We wish to avoid the danger that companies distributing free software will " +
            "individually obtain patent licenses, thus in effect transforming the program into" +
            " proprietary software. To prevent this, we have made it clear that any patent must be licensed " +
            "for everyone's free use or not licensed at all.\n" +
            "\n" +
            "Most GNU software, including some libraries, is covered by the ordinary GNU General Public License," +
            " which was designed for utility programs. This license, the GNU Library General Public License," +
            " applies to certain designated libraries. This license is quite different from the ordinary one;" +
            " be sure to read it in full, and don't assume that anything in it is the same as " +
            "in the ordinary license.\n" +
            "\n" +
            "The reason we have a separate public license for some libraries is that they blur the distinction" +
            " we usually make between modifying or adding to a program and simply using it. " +
            "Linking a program with a library, without changing the library, " +
            "is in some sense simply using the library, and is analogous " +
            "to running a utility program or application program. However, in a textual and legal sense, " +
            "the linked executable is a combined work, a derivative of the original library, " +
            "and the ordinary General Public License treats it as such.\n" +
            "\n" +
            "Because of this blurred distinction, using the ordinary General Public License for libraries " +
            "did not effectively promote software sharing, because most developers did not use the libraries. " +
            "We concluded that weaker conditions might promote sharing better.\n" +
            "\n" +
            "However, unrestricted linking of non-free programs would deprive the users of those programs " +
            "of all benefit from the free status of the libraries themselves. This Library General Public License " +
            "is intended to permit developers of non-free programs to use free libraries, " +
            "while preserving your freedom as a user of such programs to change the free libraries that " +
            "are incorporated in them. (We have not seen how to achieve this as regards changes in header files," +
            " but we have achieved it as regards changes in the actual functions of the Library.) " +
            "The hope is that this will lead to faster development of free libraries.\n" +
            "\n" +
            "The precise terms and conditions for copying, distribution and modification follow. " +
            "Pay close attention to the difference between a \"work based on the library\" and a \"work " +
            "that uses the library\". The former contains code derived from the library, " +
            "while the latter only works together with the library.\n" +
            "\n" +
            "Note that it is possible for a library to be covered by the ordinary General Public License " +
            "rather than by this special one.\n" +
            "\n" +
            "GNU LIBRARY GENERAL PUBLIC LICENSE\n" +
            "\n" +
            "TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n" +
            "\n" +
            "0. This License Agreement applies to any software library which contains a notice placed " +
            "by the copyright holder or other authorized party saying it may be distributed " +
            "under the terms of this Library General Public License (also called \"this License\"). " +
            "Each licensee is addressed as \"you\".\n" +
            "A \"library\" means a collection of software functions and/or data prepared so as " +
            "to be conveniently linked with application programs (which use some of those functions and data) " +
            "to form executables.\n" +
            "\n" +
            "The \"Library\", below, refers to any such software library or work which has been distributed" +
            " under these terms. A \"work based on the Library\" means either the Library " +
            "or any derivative work under copyright law: that is to say, a work containing the Library " +
            "or a portion of it, either verbatim or with modifications and/or translated straightforwardly " +
            "into another language. (Hereinafter, translation is included without limitation" +
            " in the term \"modification\".)\n" +
            "\n" +
            "\"Source code\" for a work means the preferred form of the work for making modifications to it. " +
            "For a library, complete source code means all the source code for all modules it contains," +
            " plus any associated interface definition files, plus the scripts used to control compilation" +
            " and installation of the library.\n" +
            "\n" +
            "Activities other than copying, distribution and modification are not covered by this License;" +
            " they are outside its scope. The act of running a program using the Library is not restricted, " +
            "and output from such a program is covered only if its contents constitute a work " +
            "based on the Library (independent of the use of the Library in a tool for writing it)." +
            " Whether that is true depends on what the Library does and what the program " +
            "that uses the Library does.\n" +
            "\n" +
            "1. You may copy and distribute verbatim copies of the Library's complete source code " +
            "as you receive it, in any medium, provided that you conspicuously and " +
            "appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty;" +
            " keep intact all the notices that refer to this License and to the absence of any warranty;" +
            " and distribute a copy of this License along with the Library.\n" +
            "You may charge a fee for the physical act of transferring a copy, and you may " +
            "at your option offer warranty protection in exchange for a fee.\n" +
            "\n" +
            "2. You may modify your copy or copies of the Library or any portion of it, " +
            "thus forming a work based on the Library, and copy and distribute such modifications or work " +
            "under the terms of Section 1 above, provided that you also meet all of these conditions:\n" +
            "a) The modified work must itself be a software library.\n" +
            "b) You must cause the files modified to carry prominent notices stating " +
            "that you changed the files and the date of any change.\n" +
            "c) You must cause the whole of the work to be licensed at no charge " +
            "to all third parties under the terms of this License.\n" +
            "d) If a facility in the modified Library refers to a function or a table of data " +
            "to be supplied by an application program that uses the facility, " +
            "other than as an argument passed when the facility is invoked, " +
            "then you must make a good faith effort to ensure that, " +
            "in the event an application does not supply such function or table, " +
            "the facility still operates, and performs whatever part of its purpose remains meaningful.\n" +
            "(For example, a function in a library to compute square roots has a purpose " +
            "that is entirely well-defined independent of the application. " +
            "Therefore, Subsection 2d requires that any application-supplied function or table used by" +
            " this function must be optional: if the application does not supply it, " +
            "the square root function must still compute square roots.)\n" +
            "\n" +
            "These requirements apply to the modified work as a whole. If identifiable sections of" +
            " that work are not derived from the Library, and can be reasonably considered independent" +
            " and separate works in themselves, then this License, and its terms, do not apply to those sections" +
            " when you distribute them as separate works. But when you distribute the same sections " +
            "as part of a whole which is a work based on the Library, the distribution of the whole must be " +
            "on the terms of this License, whose permissions for other licensees extend to the entire whole," +
            " and thus to each and every part regardless of who wrote it.\n" +
            "\n" +
            "Thus, it is not the intent of this section to claim rights or contest your rights " +
            "to work written entirely by you; rather, the intent is to exercise the right " +
            "to control the distribution of derivative or collective works based on the Library.\n" +
            "\n" +
            "In addition, mere aggregation of another work not based on the Library with the Library " +
            "(or with a work based on the Library) on a volume of a storage or distribution medium " +
            "does not bring the other work under the scope of this License.\n" +
            "\n" +
            "3. You may opt to apply the terms of the ordinary GNU General Public License instead of" +
            " this License to a given copy of the Library. To do this, you must alter all the notices " +
            "that refer to this License, so that they refer to the ordinary GNU General Public License, version 2," +
            " instead of to this License. (If a newer version than version 2 of " +
            "the ordinary GNU General Public License has appeared, " +
            "then you can specify that version instead if you wish.) " +
            "Do not make any other change in these notices.\n" +
            "Once this change is made in a given copy, it is irreversible for that copy," +
            " so the ordinary GNU General Public License applies to all subsequent copies " +
            "and derivative works made from that copy.\n" +
            "\n" +
            "This option is useful when you wish to copy part of the code of the Library " +
            "into a program that is not a library.\n" +
            "\n" +
            "4. You may copy and distribute the Library (or a portion or derivative of it, " +
            "under Section 2) in object code or executable form " +
            "under the terms of Sections 1 and 2 above provided that you accompany it " +
            "with the complete corresponding machine-readable source code, " +
            "which must be distributed under the terms of Sections 1 and 2 " +
            "above on a medium customarily used for software interchange.\n" +
            "If distribution of object code is made by offering access to copy from a designated place," +
            " then offering equivalent access to copy the source code from the same place " +
            "satisfies the requirement to distribute the source code, even though third parties " +
            "are not compelled to copy the source along with the object code.\n" +
            "\n" +
            "5. A program that contains no derivative of any portion of the Library, " +
            "but is designed to work with the Library by being compiled or linked with it, " +
            "is called a \"work that uses the Library\". Such a work, in isolation, " +
            "is not a derivative work of the Library, and therefore falls outside the scope of this License.\n" +
            "However, linking a \"work that uses the Library\" with the Library creates an executable " +
            "that is a derivative of the Library (because it contains portions of the Library), " +
            "rather than a \"work that uses the library\". The executable is therefore covered by this License. " +
            "Section 6 states terms for distribution of such executables.\n" +
            "\n" +
            "When a \"work that uses the Library\" uses material from a header file that is part of the Library, " +
            "the object code for the work may be a derivative work of the Library " +
            "even though the source code is not. Whether this is true is especially significant" +
            " if the work can be linked without the Library, or if the work is itself a library. " +
            "The threshold for this to be true is not precisely defined by law.\n" +
            "\n" +
            "If such an object file uses only numerical parameters, data structure layouts and accessors," +
            " and small macros and small inline functions (ten lines or less in length), " +
            "then the use of the object file is unrestricted, " +
            "regardless of whether it is legally a derivative work. " +
            "(Executables containing this object code plus portions of " +
            "the Library will still fall under Section 6.)\n" +
            "\n" +
            "Otherwise, if the work is a derivative of the Library, you may distribute the object code " +
            "for the work under the terms of Section 6. Any executables containing that work also fall" +
            " under Section 6, whether or not they are linked directly with the Library itself.\n" +
            "\n" +
            "6. As an exception to the Sections above, you may also compile or link a \"work that uses the Library\"" +
            " with the Library to produce a work containing portions of the Library, " +
            "and distribute that work under terms of your choice, provided that the terms permit modification " +
            "of the work for the customer's own use and reverse engineering for debugging such modifications.\n" +
            "You must give prominent notice with each copy of the work that the Library is used in it and" +
            " that the Library and its use are covered by this License. You must supply a copy of this License." +
            " If the work during execution displays copyright notices, you must include the copyright notice " +
            "for the Library among them, as well as a reference directing the user to the copy of this License." +
            " Also, you must do one of these things:\n" +
            "\n" +
            "a) Accompany the work with the complete corresponding machine-readable source code " +
            "for the Library including whatever changes were used in the work " +
            "(which must be distributed under Sections 1 and 2 above); and, " +
            "if the work is an executable linked with the Library, with the complete machine-readable" +
            " \"work that uses the Library\", as object code and/or source code, " +
            "so that the user can modify the Library and then relink to produce a modified executable " +
            "containing the modified Library. (It is understood that the user who changes the contents " +
            "of definitions files in the Library will not necessarily be able to recompile the application" +
            " to use the modified definitions.)\n" +
            "b) Accompany the work with a written offer, valid for at least three years, " +
            "to give the same user the materials specified in Subsection 6a, above, " +
            "for a charge no more than the cost of performing this distribution.\n" +
            "c) If distribution of the work is made by offering access to copy from a designated place, " +
            "offer equivalent access to copy the above specified materials from the same place.\n" +
            "d) Verify that the user has already received a copy of these materials " +
            "or that you have already sent this user a copy.\n" +
            "For an executable, the required form of the \"work that uses the Library\" " +
            "must include any data and utility programs needed for reproducing the executable from it. " +
            "However, as a special exception, the source code distributed need not include anything that is " +
            "normally distributed (in either source or binary form) with the major components" +
            " (compiler, kernel, and so on) of the operating system on which the executable runs, " +
            "unless that component itself accompanies the executable.\n" +
            "\n" +
            "It may happen that this requirement contradicts the license restrictions " +
            "of other proprietary libraries that do not normally accompany the operating system." +
            " Such a contradiction means you cannot use both them and the Library together " +
            "in an executable that you distribute.\n" +
            "\n" +
            "7. You may place library facilities that are a work based on the Library side-by-side" +
            " in a single library together with other library facilities not covered by this License," +
            " and distribute such a combined library, provided that the separate distribution of the work" +
            " based on the Library and of the other library facilities is otherwise permitted, " +
            "and provided that you do these two things:\n" +
            "a) Accompany the combined library with a copy of the same work based on the Library, " +
            "uncombined with any other library facilities. This must be distributed " +
            "under the terms of the Sections above.\n" +
            "b) Give prominent notice with the combined library of the fact that part of " +
            "it is a work based on the Library, and explaining where to find the accompanying " +
            "uncombined form of the same work.\n" +
            "8. You may not copy, modify, sublicense, link with, or distribute the Library except as" +
            " expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, " +
            "link with, or distribute the Library is void, and will automatically terminate your rights " +
            "under this License. However, parties who have received copies, or rights, " +
            "from you under this License will not have their licenses terminated so long as " +
            "such parties remain in full compliance.\n" +
            "9. You are not required to accept this License, since you have not signed it. " +
            "However, nothing else grants you permission to modify or distribute the Library or its derivative works." +
            " These actions are prohibited by law if you do not accept this License. " +
            "Therefore, by modifying or distributing the Library (or any work based on the Library), " +
            "you indicate your acceptance of this License to do so, and all its terms and conditions for copying," +
            " distributing or modifying the Library or works based on it.\n" +
            "10. Each time you redistribute the Library (or any work based on the Library), " +
            "the recipient automatically receives a license from the original licensor to copy, distribute," +
            " link with or modify the Library subject to these terms and conditions. " +
            "You may not impose any further restrictions on the recipients' exercise of the rights granted herein." +
            " You are not responsible for enforcing compliance by third parties to this License.\n" +
            "11. If, as a consequence of a court judgment or allegation of patent infringement " +
            "or for any other reason (not limited to patent issues), conditions are imposed on you" +
            " (whether by court order, agreement or otherwise) that contradict the conditions of this License," +
            " they do not excuse you from the conditions of this License. " +
            "If you cannot distribute so as to satisfy simultaneously your obligations under this License " +
            "and any other pertinent obligations, then as a consequence you may not distribute the Library at all." +
            " For example, if a patent license would not permit royalty-free redistribution of the Library " +
            "by all those who receive copies directly or indirectly through you, " +
            "then the only way you could satisfy both it and this License would be " +
            "to refrain entirely from distribution of the Library.\n" +
            "If any portion of this section is held invalid or unenforceable under any particular circumstance," +
            " the balance of the section is intended to apply, and the section as a whole is intended to" +
            " apply in other circumstances.\n" +
            "\n" +
            "It is not the purpose of this section to induce you to infringe any patents or " +
            "other property right claims or to contest validity of any such claims; " +
            "this section has the sole purpose of protecting the integrity of the free software distribution system" +
            " which is implemented by public license practices. Many people have made generous contributions " +
            "to the wide range of software distributed through that system in reliance " +
            "on consistent application of that system; it is up to the author/donor to decide " +
            "if he or she is willing to distribute software through any other system " +
            "and a licensee cannot impose that choice.\n" +
            "\n" +
            "This section is intended to make thoroughly clear what is believed to be a consequence " +
            "of the rest of this License.\n" +
            "\n" +
            "12. If the distribution and/or use of the Library is restricted in certain countries either " +
            "by patents or by copyrighted interfaces, the original copyright holder " +
            "who places the Library under this License may add an explicit geographical distribution limitation " +
            "excluding those countries, " +
            "so that distribution is permitted only in or among countries not thus excluded. " +
            "In such case, this License incorporates the limitation as if written in the body of this License.\n" +
            "13. The Free Software Foundation may publish revised and/or new versions of" +
            " the Library General Public License from time to time. " +
            "Such new versions will be similar in spirit to the present version, " +
            "but may differ in detail to address new problems or concerns.\n" +
            "Each version is given a distinguishing version number. If the Library specifies a version number of" +
            " this License which applies to it and \"any later version\", " +
            "you have the option of following the terms and conditions either of that version or of any later version" +
            " published by the Free Software Foundation. If the Library does not specify a license version number," +
            " you may choose any version ever published by the Free Software Foundation.\n" +
            "\n" +
            "14. If you wish to incorporate parts of the Library into other free programs " +
            "whose distribution conditions are incompatible with these, write to the author to ask for permission." +
            " For software which is copyrighted by the Free Software Foundation, " +
            "write to the Free Software Foundation; we sometimes make exceptions for this. " +
            "Our decision will be guided by the two goals of preserving the free status of all derivatives " +
            "of our free software and of promoting the sharing and reuse of software generally.\n" +
            "NO WARRANTY\n" +
            "\n" +
            "15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY," +
            " TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING " +
            "THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY KIND, " +
            "EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY " +
            "AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY " +
            "IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, " +
            "REPAIR OR CORRECTION.\n" +
            "16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, " +
            "OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE," +
            " BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL " +
            "OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY " +
            "(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE " +
            "OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE " +
            "WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED " +
            "OF THE POSSIBILITY OF SUCH DAMAGES.\n" +
            "END OF TERMS AND CONDITIONS\n" +
            "\n" +
            "How to Apply These Terms to Your New Libraries\n" +
            "\n" +
            "If you develop a new library, and you want it to be of the greatest possible use to the public, " +
            "we recommend making it free software that everyone can redistribute and change. " +
            "You can do so by permitting redistribution under these terms (or, alternatively," +
            " under the terms of the ordinary General Public License).\n" +
            "\n" +
            "To apply these terms, attach the following notices to the library. " +
            "It is safest to attach them to the start of each source file to " +
            "most effectively convey the exclusion of warranty; and each file should have at least the \"copyright\"" +
            " line and a pointer to where the full notice is found.\n" +
            "\n" +
            "one line to give the library's name and an idea of what it does.\n" +
            "Copyright (C) year name of author\n" +
            "\n" +
            "This library is free software; you can redistribute it and/or modify it under the terms of " +
            "the GNU Library General Public License as published by the Free Software Foundation; " +
            "either version 2 of the License, or (at your option) any later version.\n" +
            "\n" +
            "This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;" +
            " without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. " +
            "See the GNU Library General Public License for more details.\n" +
            "\n" +
            "You should have received a copy of the GNU Library General Public License along with this library;" +
            " if not, write to the Free Software Foundation, Inc., " +
            "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.\n" +
            "\n" +
            "Also add information on how to contact you by electronic and paper mail.\n" +
            "\n" +
            "You should also get your employer (if you work as a programmer) or your school, " +
            "if any, to sign a \"copyright disclaimer\" for the library, if necessary. " +
            "Here is a sample; alter the names:\n" +
            "\n" +
            "Yoyodyne, Inc., hereby disclaims all copyright interest in\n" +
            "the library `Frob' (a library for tweaking knobs) written\n" +
            "by James Random Hacker.\n" +
            "\n" +
            "signature of Ty Coon, 1 April 1990\n" +
            "Ty Coon, President of Vice\n" +
            "\n" +
            "That's all there is to it!";
    private final String gplLicenseText = "GNU GENERAL PUBLIC LICENSE\n" +
            "Version 2, June 1991\n" +
            "\n" +
            "Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n" +
            "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\n" +
            "\n" +
            "Everyone is permitted to copy and distribute verbatim copies of this license document," +
            " but changing it is not allowed.\n" +
            "\n" +
            "Preamble\n" +
            "\n" +
            "The licenses for most software are designed to take away your freedom to share and change it. " +
            "By contrast, the GNU General Public License is intended to guarantee your freedom to share and " +
            "change free software--to make sure the software is free for all its users. This General Public " +
            "License applies to most of the Free Software Foundation's software and to any other program" +
            " whose authors commit to using it. (Some other Free Software Foundation software is covered " +
            "by the GNU Lesser General Public License instead.) You can apply it to your programs, too.\n" +
            "\n" +
            "When we speak of free software, we are referring to freedom, not price. Our General Public Licenses " +
            "are designed to make sure that you have the freedom to distribute copies of free software " +
            "(and charge for this service if you wish), that you receive source code or " +
            "can get it if you want it, " +
            "that you can change the software or use pieces of it in new free programs; and that you know " +
            "you can do these things.\n" +
            "\n" +
            "To protect your rights, we need to make restrictions that forbid anyone to deny you these rights " +
            "or to ask you to surrender the rights. These restrictions translate to certain responsibilities " +
            "for you if you distribute copies of the software, or if you modify it.\n" +
            "\n" +
            "For example, if you distribute copies of such a program, whether gratis or for a fee, " +
            "you must give the recipients all the rights that you have. You must make sure that they, too, " +
            "receive or can get the source code. And you must show them these terms so they know their rights.\n" +
            "\n" +
            "We protect your rights with two steps: (1) copyright the software, and (2) offer you this license" +
            " which gives you legal permission to copy, distribute and/or modify the software.\n" +
            "\n" +
            "Also, for each author's protection and ours, we want to make certain that everyone understands " +
            "that there is no warranty for this free software. If the software is modified by someone else" +
            " and passed on, we want its recipients to know that what they have is not the original, " +
            "so that any problems introduced by others will not reflect on the original authors' reputations.\n" +
            "\n" +
            "Finally, any free program is threatened constantly by software patents. We wish to avoid the danger" +
            " that redistributors of a free program will individually obtain patent licenses, in effect making" +
            " the program proprietary. To prevent this, we have made it clear that any patent must be licensed " +
            "for everyone's free use or not licensed at all.\n" +
            "\n" +
            "The precise terms and conditions for copying, distribution and modification follow.\n" +
            "\n" +
            "TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n" +
            "\n" +
            "0. This License applies to any program or other work which contains a notice placed " +
            "by the copyright holder saying it may be distributed under the terms of this General Public License." +
            " The \"Program\", below, refers to any such program or work, and a \"work based on the Program\" " +
            "means either the Program or any derivative work under copyright law: that is to say, " +
            "a work containing the Program or a portion of it, either verbatim or with modifications and/or" +
            " translated into another language. (Hereinafter, translation is included without limitation " +
            "in the term \"modification\".) Each licensee is addressed as \"you\".\n" +
            "Activities other than copying, distribution and modification are not covered by this License;" +
            " they are outside its scope. The act of running the Program is not restricted, " +
            "and the output from the Program is covered only if its contents constitute a work based on" +
            " the Program (independent of having been made by running the Program). " +
            "Whether that is true depends on " +
            "what the Program does.\n" +
            "\n" +
            "1. You may copy and distribute verbatim copies of the Program's source code as you receive it, " +
            "in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate" +
            " copyright notice and disclaimer of warranty; keep intact all the notices that refer to " +
            "this License and to the absence of any warranty; and give any other recipients of the Program " +
            "a copy of this License along with the Program.\n" +
            "You may charge a fee for the physical act of transferring a copy, and you may at " +
            "your option offer warranty protection in exchange for a fee.\n" +
            "\n" +
            "2. You may modify your copy or copies of the Program or any portion of it, " +
            "thus forming a work based on the Program, and copy and distribute such modifications " +
            "or work under the terms of Section 1 above, provided that you also meet all of these conditions:\n" +
            "a) You must cause the modified files to carry prominent notices stating that you changed the files" +
            " and the date of any change.\n" +
            "b) You must cause any work that you distribute or publish, that in whole or in part contains " +
            "or is derived from the Program or any part thereof, to be licensed as a whole at no charge " +
            "to all third parties under the terms of this License.\n" +
            "c) If the modified program normally reads commands interactively when run, you must cause it, " +
            "when started running for such interactive use in the most ordinary way, " +
            "to print or display an announcement including an appropriate copyright notice and a notice" +
            " that there is no warranty (or else, saying that you provide a warranty) and " +
            "that users may redistribute the program under these conditions, and telling the user " +
            "how to view a copy of this License. (Exception: if the Program itself is interactive " +
            "but does not normally print such an announcement, your work based on the Program is not required to" +
            " print an announcement.)\n" +
            "These requirements apply to the modified work as a whole. If identifiable sections of that work " +
            "are not derived from the Program, and can be reasonably considered independent and " +
            "separate works in themselves, then this License, and its terms, do not apply to those sections " +
            "when you distribute them as separate works. But when you distribute the same sections as part of " +
            "a whole which is a work based on the Program, the distribution of the whole must be on the terms of" +
            " this License, whose permissions for other licensees extend to the entire whole, " +
            "and thus to each and every part regardless of who wrote it.\n" +
            "\n" +
            "Thus, it is not the intent of this section to claim rights or contest your rights to work written" +
            " entirely by you; rather, the intent is to exercise the right to control the distribution" +
            " of derivative or collective works based on the Program.\n" +
            "\n" +
            "In addition, mere aggregation of another work not based on the Program with the Program" +
            " (or with a work based on the Program) on a volume of a storage or " +
            "distribution medium does not bring the other work under the scope of this License.\n" +
            "\n" +
            "3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code" +
            " or executable form under the terms of Sections 1 and 2 above provided that" +
            " you also do one of the following:\n" +
            "a) Accompany it with the complete corresponding machine-readable source code," +
            " which must be distributed under the terms of Sections 1 and 2 above on a medium customarily" +
            " used for software interchange; or,\n" +
            "b) Accompany it with a written offer, valid for at least three years, to give any third party," +
            " for a charge no more than your cost of physically performing source distribution, " +
            "a complete machine-readable copy of the corresponding source code, " +
            "to be distributed under the terms of Sections 1 and 2 above on a medium customarily used " +
            "for software interchange; or,\n" +
            "c) Accompany it with the information you received as to the offer to" +
            " distribute corresponding source code. (This alternative is allowed only " +
            "for noncommercial distribution and only if you received the program in object code " +
            "or executable form with such an offer, in accord with Subsection b above.)\n" +
            "The source code for a work means the preferred form of the work for making modifications to it. " +
            "For an executable work, complete source code means all the source code for all modules it contains, " +
            "plus any associated interface definition files, plus the scripts used to control compilation " +
            "and installation of the executable. However, as a special exception, the source code " +
            "distributed need not include anything that is normally distributed (in either source or binary form)" +
            " with the major components (compiler, kernel, and so on) of the operating system on " +
            "which the executable runs, unless that component itself accompanies the executable.\n" +
            "\n" +
            "If distribution of executable or object code is made by offering access to copy from " +
            "a designated place, then offering equivalent access to copy the source code from" +
            " the same place counts as distribution of the source code, even though third parties are " +
            "not compelled to copy the source along with the object code.\n" +
            "\n" +
            "4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided " +
            "under this License. Any attempt otherwise to copy, modify, sublicense or " +
            "distribute the Program is void, and will automatically terminate your rights under this License." +
            " However, parties who have received copies, or rights, from you under this License " +
            "will not have their licenses terminated so long as such parties remain in full compliance.\n" +
            "5. You are not required to accept this License, since you have not signed it. " +
            "However, nothing else grants you permission to modify or distribute the Program " +
            "or its derivative works. These actions are prohibited by law if you do not accept this License." +
            " Therefore, by modifying or distributing the Program (or any work based on the Program), " +
            "you indicate your acceptance of this License to do so, and all its terms and conditions for copying," +
            " distributing or modifying the Program or works based on it.\n" +
            "6. Each time you redistribute the Program (or any work based on the Program), " +
            "the recipient automatically receives a license from the original licensor to copy, distribute or" +
            " modify the Program subject to these terms and conditions. " +
            "You may not impose any further restrictions" +
            " on the recipients' exercise of the rights granted herein. You are not responsible " +
            "for enforcing compliance by third parties to this License.\n" +
            "7. If, as a consequence of a court judgment or allegation of patent infringement or " +
            "for any other reason (not limited to patent issues), conditions are imposed on you " +
            "(whether by court order, agreement or otherwise) that contradict the conditions of this License, " +
            "they do not excuse you from the conditions of this License. If you cannot distribute so as " +
            "to satisfy simultaneously your obligations under this License and any other pertinent obligations," +
            " then as a consequence you may not distribute the Program at all. For example, " +
            "if a patent license would not permit royalty-free redistribution of the Program " +
            "by all those who receive copies directly or indirectly through you, then the only way " +
            "you could satisfy both it and this License would be to refrain entirely " +
            "from distribution of the Program.\n" +
            "If any portion of this section is held invalid or unenforceable under any particular circumstance," +
            " the balance of the section is intended to apply and the section as a whole is intended to " +
            "apply in other circumstances.\n" +
            "\n" +
            "It is not the purpose of this section to induce you to infringe any patents or " +
            "other property right claims or to contest validity of any such claims; " +
            "this section has the sole purpose of protecting the integrity of " +
            "the free software distribution system," +
            " which is implemented by public license practices. Many people have made generous contributions to " +
            "the wide range of software distributed through that system in reliance on consistent application " +
            "of that system; it is up to the author/donor to decide if he or she is willing " +
            "to distribute software through any other system and a licensee cannot impose that choice.\n" +
            "\n" +
            "This section is intended to make thoroughly clear what is believed to be a consequence of " +
            "the rest of this License.\n" +
            "\n" +
            "8. If the distribution and/or use of the Program is restricted in certain countries either by" +
            " patents or by copyrighted interfaces, the original copyright holder who places the Program " +
            "under this License may add an explicit geographical distribution limitation " +
            "excluding those countries," +
            " so that distribution is permitted only in or among countries not thus excluded. " +
            "In such case, this License incorporates the limitation as if written in the body of this License.\n" +
            "9. The Free Software Foundation may publish revised and/or new versions of " +
            "the General Public License" +
            " from time to time. Such new versions will be similar in spirit to the present version, " +
            "but may differ in detail to address new problems or concerns.\n" +
            "Each version is given a distinguishing version number. If the Program specifies a version number of" +
            " this License which applies to it and \"any later version\", you have the option of following " +
            "the terms and conditions either of that version or of any later version published by" +
            " the Free Software Foundation. If the Program does not specify a version number of this License," +
            " you may choose any version ever published by the Free Software Foundation.\n" +
            "\n" +
            "10. If you wish to incorporate parts of the Program into other free programs " +
            "whose distribution conditions are different, write to the author to ask for permission. " +
            "For software which is copyrighted by the Free Software Foundation, write to " +
            "the Free Software Foundation;" +
            " we sometimes make exceptions for this. Our decision will be guided by the two goals of " +
            "preserving the free status of all derivatives of our free software " +
            "and of promoting the sharing and " +
            "reuse of software generally.\n" +
            "NO WARRANTY\n" +
            "\n" +
            "11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, " +
            "TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT " +
            "HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, " +
            "EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF " +
            "MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND " +
            "PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, " +
            "YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n" +
            "12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER," +
            " OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE," +
            " BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL " +
            "OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM " +
            "(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED " +
            "BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), " +
            "EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n" +
            "END OF TERMS AND CONDITIONS\n" +
            "\n" +
            "How to Apply These Terms to Your New Programs\n" +
            "\n" +
            "If you develop a new program, and you want it to be of the greatest possible use to the public," +
            " the best way to achieve this is to make it free software which everyone can redistribute and " +
            "change under these terms.\n" +
            "\n" +
            "To do so, attach the following notices to the program. It is safest to attach them to the start of" +
            " each source file to most effectively convey the exclusion of warranty; and each file should have " +
            "at least the \"copyright\" line and a pointer to where the full notice is found.\n" +
            "\n" +
            "<one line to give the program's name and an idea of what it does.>\n" +
            "Copyright (C) < yyyy> <name of author>\n" +
            "\n" +
            "This program is free software; you can redistribute it and/or modify it under the terms of" +
            " the GNU General Public License as published by the Free Software Foundation; " +
            "either version 2 of the License, or (at your option) any later version.\n" +
            "\n" +
            "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;" +
            " without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. " +
            "See the GNU General Public License for more details.\n" +
            "\n" +
            "You should have received a copy of the GNU General Public License along with this program; " +
            "if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston," +
            " MA 02110-1301, USA.\n" +
            "\n" +
            "Also add information on how to contact you by electronic and paper mail.\n" +
            "\n" +
            "If the program is interactive, make it output a short notice like this when it starts in" +
            " an interactive mode:\n" +
            "\n" +
            "Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with" +
            " ABSOLUTELY NO WARRANTY;" +
            " for details type `show w'. This is free software, and you are welcome to redistribute it under " +
            "certain conditions; type `show c' for details.\n" +
            "\n" +
            "The hypothetical commands `show w' and `show c' should show the appropriate parts of " +
            "the General Public License. Of course, the commands you use may be called something other than" +
            " `show w' and `show c'; they could even be mouse-clicks or " +
            "menu items--whatever suits your program.\n" +
            "\n" +
            "You should also get your employer (if you work as a programmer) or your school, if any, " +
            "to sign a \"copyright disclaimer\" for the program, if necessary. " +
            "Here is a sample; alter the names:\n" +
            "\n" +
            "Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' " +
            "(which makes passes at compilers) written by James Hacker.\n" +
            "\n" +
            "<signature of Ty Coon >, 1 April 1989 Ty Coon, President of Vice\n" +
            "\n" +
            "This General Public License does not permit incorporating your program into proprietary programs. " +
            "If your program is a subroutine library, you may consider it more useful to " +
            "permit linking proprietary applications with the library. If this is what you want to do," +
            " use the GNU Lesser General Public License instead of this License.";



    private final String bsdLicenseText = "Copyright (c) <year> <owner>.\n" +
            "\n" +
            "Redistribution and use in source and binary forms, with or without modification, are permitted provided " +
            "that the following conditions are met:\n" +
            "\n" +
            "1. Redistributions of source code must retain the above copyright notice, " +
            "this list of conditions and the following disclaimer.\n" +
            "2. Redistributions in binary form must reproduce the above copyright notice, " +
            "this list of conditions and the following disclaimer in the documentation and/or " +
            "other materials provided with the distribution.\n" +
            "3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse " +
            "or promote products derived from this software without specific prior written permission.\n" +
            "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS " +
            "OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY " +
            "AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER " +
            "OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, " +
            "OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; " +
            "LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON" +
            " ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT " +
            "(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE," +
            " EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.";



    /**
     * 测试的setup
     *
     * @throws Exception 如果step up失败
     */
    public void setUp() throws Exception {
        super.setUp();
        this.oatConfig = new OatConfig();
        final String jarOatPkgPath = new File(Objects.requireNonNull(this.getClass().getResource("/ohos/oat")).
                getFile()).getCanonicalPath();
        final String jarRootPath = jarOatPkgPath.substring(0, jarOatPkgPath.length() - 8);
        this.oatConfig.setBasedir(jarRootPath + "");
        this.filePath = jarRootPath + "testproject/apache/A.java";
    }

    /**
     * 测试需要检查的文件是否需要进行插件检查功能
     *
     * @throws Exception 如果tear down失败
     */
    public void tearDown() throws Exception {
        super.tearDown();
    }

    /**
     * 测试设置插件检查模式
     */
    public void testSetPluginCheckMode() {
        this.oatConfig.setPluginCheckMode("0");
    }

    /**
     * 测试获取数据
     */
    public void testGetData() {
        String value = this.oatConfig.getData("policy");
        Assert.assertEquals("", value);
    }

    /**
     * 测试插入数据
     */
    public void testPutData() {
        this.oatConfig.putData("policy", "123");
        String newValue = this.oatConfig.getData("policy");
        Assert.assertEquals("123", newValue);
    }

    /**
     * 测试设置源码列表
     */
    public void testSetSrcFileList() {
        this.oatConfig.setSrcFileList("//src//test");
        this.oatConfig.setSrcFileList("\\src\\test");
    }

    /**
     * 测试需要检查的文件是否需要进行插件检查功能
     *
     * @throws IOException 如果文件操作失败
     */
    public void testNeedCheck() throws IOException {
        this.oatConfig.setPluginCheckMode("1");
        File file = new File(this.filePath);
        boolean isNeedCheck = this.oatConfig.needCheck(file);
        Assert.assertFalse(isNeedCheck);

        this.oatConfig.setPluginCheckMode("0");
        file = new File(this.filePath);
        isNeedCheck = this.oatConfig.needCheck(file);
        Assert.assertTrue(isNeedCheck);

        this.oatConfig.setSrcFileList("\\src\\test");
        this.oatConfig.setPluginCheckMode("1");
        file = new File(this.filePath);
        isNeedCheck = this.oatConfig.needCheck(file);
        Assert.assertFalse(isNeedCheck);

        final String jarOatPkgPath = new File(Objects.requireNonNull(this.getClass().getResource("/ohos/oat")).
                getFile()).getCanonicalPath();
        final String jarRootPath = jarOatPkgPath.substring(0, jarOatPkgPath.length() - 8);
        this.oatConfig.setSrcFileList(jarRootPath);
        this.oatConfig.setPluginCheckMode("1");
        file = new File(this.filePath);
        isNeedCheck = this.oatConfig.needCheck(file);
        Assert.assertFalse(isNeedCheck);
    }

    /**
     * 测试获取许可证文本到名称的映射
     */
    public void testGetLicenseText2NameMap() {
        final Map<String, List<String>> licenseText2NameMap = this.oatConfig.getLicenseText2NameMap();
        Assert.assertEquals(0, licenseText2NameMap.size());
    }

    /**
     * 测试获取许可证文本兼容性的映射
     */
    public void testGetLicenseCompatibilityMap() {
        final Map<String, List<String>> licenseCompatibilityMap = this.oatConfig.getLicenseCompatibilityMap();
        Assert.assertEquals(0, licenseCompatibilityMap.size());
    }

    /**
     * 测试获取许可证文本兼容性的映射
     */
    public void testGetOatFileFilter() {
        OatFileFilter filter = this.oatConfig.getOatFileFilter("XXX");
        Assert.assertNull(filter);
    }

    /**
     * 测试是否是插件模式
     */
    public void testIsPluginMode() {
        this.oatConfig.setPluginMode(true);
        boolean pluginMode = this.oatConfig.isPluginMode();
        Assert.assertTrue(pluginMode);

        this.oatConfig.setPluginMode(false);
        pluginMode = this.oatConfig.isPluginMode();
        Assert.assertFalse(pluginMode);
    }

    /**
     * 测试设置插件模式
     */
    public void testSetPluginMode() {
        this.oatConfig.setPluginMode(true);
        this.oatConfig.setPluginMode(false);
        this.oatConfig.setPluginMode(true);
        boolean pluginMode = this.oatConfig.isPluginMode();
        Assert.assertTrue(pluginMode);
    }

    /**
     * 测试获取仓库名称
     */
    public void testGetRepositoryName() {
        this.oatConfig.setRepositoryName("test");
        String repositoryName = this.oatConfig.getRepositoryName();
        Assert.assertEquals("test", repositoryName);
    }

    /**
     * 测试设置仓库名称
     */
    public void testSetRepositoryName() {
        this.oatConfig.setRepositoryName("test");
        String repositoryName = this.oatConfig.getRepositoryName();
        Assert.assertEquals("test", repositoryName);

        this.oatConfig.setRepositoryName("test2");
        repositoryName = this.oatConfig.getRepositoryName();
        Assert.assertEquals("test2", repositoryName);

        this.oatConfig.setRepositoryName("");
        repositoryName = this.oatConfig.getRepositoryName();
        Assert.assertEquals("", repositoryName);
    }

    /**
     * 测试添加文件过滤器
     */
    public void testAddFileFilter() {
        this.oatConfig.addFileFilter(new OatFileFilter("filename", "test"));
    }

    /**
     * 测试添加策略
     */
    public void testAddPolicy() {
        this.oatConfig.addPolicy(new OatPolicy());
    }

    /**
     * 测试添加任务
     */
    public void testAddTask() {
        this.oatConfig.addTask(new OatTask());
    }

    /**
     * 测试添加两个许可证文本
     */
    public void testAddTwoLicenseText() {


        this.oatConfig.addLicenseText("Apache-2.0", this.apacheLicenseText);
        Map<String, List<String>> lic2Name = this.oatConfig.getLicenseText2NameMap();
        List<String> liclist = lic2Name.get("Apache-2.0");
        String licText = liclist.get(0);
        Assert.assertEquals(this.apacheLicenseText, licText);


        this.oatConfig.addLicenseText("GPL", this.gplLicenseText);
        Map<String, List<String>> licenseText2NameMapNext = this.oatConfig.getLicenseText2NameMap();
        List<String> gplLicense = licenseText2NameMapNext.get("GPL");
        String gplText = gplLicense.get(0);
        Assert.assertEquals(this.gplLicenseText, gplText);
    }

    /**
     * 测试添加三个许可证文本
     */
    public void testAddThreeLicenseText() {
        this.oatConfig.addLicenseText("Apache-2.0", this.apacheLicenseText);
        Map<String, List<String>> lic2Name = this.oatConfig.getLicenseText2NameMap();
        List<String> liclist = lic2Name.get("Apache-2.0");
        String licText = liclist.get(0);
        Assert.assertEquals(this.apacheLicenseText, licText);

        this.oatConfig.addLicenseText("GPL", this.gplLicenseText);
        Map<String, List<String>> licenseText2NameMapNext = this.oatConfig.getLicenseText2NameMap();
        List<String> gplLicense = licenseText2NameMapNext.get("GPL");
        String gplText = gplLicense.get(0);
        Assert.assertEquals(this.gplLicenseText, gplText);

        this.oatConfig.addLicenseText("MPL-2.0", this.mplLicenseText);
        List<String> gpl2License = lic2Name.get("MPL-2.0");
        String newLicText = gpl2License.get(0);
        Assert.assertEquals(this.mplLicenseText, newLicText);
    }

    /**
     * 测试添加四个许可证文本
     */
    public void testAddFourLicenseText() {
        this.oatConfig.addLicenseText("Apache-2.0", this.apacheLicenseText);
        Map<String, List<String>> lic2Name = this.oatConfig.getLicenseText2NameMap();
        List<String> liclist = lic2Name.get("Apache-2.0");
        String licText = liclist.get(0);
        Assert.assertEquals(this.apacheLicenseText, licText);

        this.oatConfig.addLicenseText("GPL", this.gplLicenseText);
        Map<String, List<String>> licenseText2NameMapNext = this.oatConfig.getLicenseText2NameMap();
        List<String> gplLicense = licenseText2NameMapNext.get("GPL");
        String gplText = gplLicense.get(0);
        Assert.assertEquals(this.gplLicenseText, gplText);

        this.oatConfig.addLicenseText("BSD-3", this.bsdLicenseText);
        List<String> bsdLicense = lic2Name.get("BSD-3");
        String newLicText = bsdLicense.get(0);
        Assert.assertEquals(this.bsdLicenseText, newLicText);

        this.oatConfig.addLicenseText("LGPL-2.0", this.lgplLicenseText);
        List<String> gpl2License = lic2Name.get("LGPL-2.0");
        String lgplLicText = gpl2License.get(0);
        Assert.assertEquals(this.lgplLicenseText, lgplLicText);
    }

    /**
     * 测试许可证兼容性配置
     */
    public void testAddApacheAndBsdCompatibilityLicense() {
        this.oatConfig.addCompatibilityLicense("Apache-2.0", "BSD-3");
        Map<String, List<String>> comMapList = this.oatConfig.getLicenseCompatibilityMap();
        List<String> comMap = comMapList.get("Apache-2.0");
        String licText = comMap.get(0);
        Assert.assertEquals("BSD-3", licText);
    }

    /**
     * 测试许可证不兼容性配置
     */
    public void testAddApacheAndLGPLCompatibilityLicense() {
        this.oatConfig.addCompatibilityLicense("Apache-2.0", "LGPL-2.0");
        Map<String, List<String>> comMapList = this.oatConfig.getLicenseCompatibilityMap();
        List<String> comMap = comMapList.get("Apache-2.0");
        String licText = comMap.get(0);
        Assert.assertEquals("LGPL-2.0", licText);
    }

    /**
     * 测试许可证三个许可证的兼容性配置
     */
    public void testAddApacheBsdLGPLCompatibilityLicense() {
        this.oatConfig.addCompatibilityLicense("Apache-2.0", "BSD-3");
        this.oatConfig.addCompatibilityLicense("Apache-2.0", "LGPL-2.0");
        Map<String, List<String>> comMapList = this.oatConfig.getLicenseCompatibilityMap();
        List<String> comMap = comMapList.get("Apache-2.0");
        String licText = comMap.get(0);
        Assert.assertEquals("BSD-3", licText);

        String secondLicText = comMap.get(1);
        Assert.assertEquals("LGPL-2.0", secondLicText);
    }

    /**
     * 测试许可证四个许可证的兼容性配置
     */
    public void testAddLicenseAndCompatibilityLicense() {
        this.oatConfig.addLicenseText("Apache-2.0", this.apacheLicenseText);
        this.oatConfig.addLicenseText("GPL", this.gplLicenseText);
        this.oatConfig.addLicenseText("BSD-3", this.bsdLicenseText);
        this.oatConfig.addLicenseText("LGPL-2.0", this.lgplLicenseText);
        this.oatConfig.addLicenseText("MPL-2.0", this.mplLicenseText);
        this.oatConfig.addCompatibilityLicense("Apache-2.0", "BSD-3");
        this.oatConfig.addCompatibilityLicense("Apache-2.0", "LGPL-2.0");
        Map<String, List<String>> licenseText2NameMapNext = this.oatConfig.getLicenseText2NameMap();
        List<String> gplLicense = licenseText2NameMapNext.get("GPL");
        String gplText = gplLicense.get(0);
        Assert.assertEquals(this.gplLicenseText, gplText);
        Map<String, List<String>> comMapList = this.oatConfig.getLicenseCompatibilityMap();
        List<String> comMap = comMapList.get("Apache-2.0");
        String licText = comMap.get(0);
        Assert.assertEquals("BSD-3", licText);
    }
}